﻿/*
 * 公共方法
 */
FUNCTION = {
	  /**多选是ID组合**/	
	   resultantNum : function (selects,id){
			var ids = "";
			var len = selects.length;
			if(len > 0 && id!=''){
		    	for(var i=0 ; i<len; i++){
		 		ids = ids + selects[i].get(id) + ",";
		    	}
		    	ids = ids.substr(0,ids.length-1);
	    	}
	    	return ids;
		},
	     // 去除双引号、回车换行
	     convDbEnToCh: function(id, Ext){
 
	    	 var temp = null ;
	    	 try { 
	    	 	temp = Ext.getCmp(id).getValue();
	    	 }catch(ex){
	    	 }
	    	 if(temp!= null && temp!=""){
	    	 	while(temp.indexOf('\"') != -1)
		  	 		temp=temp.replace('\"','“');
		  	    while(temp.indexOf('\r\n') != -1)
		  	 		temp=temp.replace('\r\n','  ');
	    	 	Ext.getCmp(id).setValue(temp);
	    	 }
	  
	   } , 
	   // 去除双引号、回车换行
	   convDbEnToChStr: function(temp){
	    	 if(temp!= null && temp!=""){
	    	 	while(temp.indexOf('\"') != -1) {
		  	 		temp=temp.replace('\"','\'');
		  	 	}
		  	    while(temp.indexOf('\r\n') != -1) {
		  	 		temp=temp.replace('\r\n','  ');
	    	 	}
	    	 }
	  
	  		return temp;
	   },
	   // 将字符串按指定分隔符分串，返回指定位数据
	   getSubStrByIndex : function (data,index,split){
  			var ivrcode="";
  			var dd = Array();
  			dd = data.split(split);
  			ivrcode = dd[index];
  			return ivrcode;
  		},	
  	   /**
		 * 发送同步ajax请求
		 * @param url {String} url
		 * @param data {String} 发送的参数
		 */
		syncAJAX : function(url,data){
			//Ext.MessageBox.show({msg:'正在提交处理，请稍候...', width:300,  wait:true, waitConfig: {interval:200}});
			var back_data = "";
			var objHTTP = FUNCTION.createXhrObject();//Ext.lib.Ajax.getConnectionObject().conn;//ext-base.js压缩不适用
			var clearTO = setTimeout(function()  /*重点，在请求发布后开始设置setTimeout，如果请求状态不成功也就是readyState != 4 那么setTimeout将会在5秒后运行，并弹出信息提示，要是请求成功，将会清除该setTimeout*/
            {
                objHTTP.abort(); //终止XMLHttpRequest对象
                alert("系统异常，请您刷新页面或稍后再试！");
            }, 60000);
			objHTTP.onreadystatechange=function(){ 
				if (objHTTP.readyState == 4) { 
					if (objHTTP.status == 200) { 
						clearTimeout(clearTO); //如果准备状态成功，并且HTTP状态码正确则清除setTimeout
						back_data = objHTTP.responseText; 
					}
				}
			};
			objHTTP.open('post', url, false);
			objHTTP.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
			objHTTP.send(encodeURI(data));
			//var back_data = objHTTP.responseText;
			objHTTP = null;
			//setTimeout(function(){Ext.MessageBox.hide();},100)
			return back_data;
		},	
     asyncAJAX: function(url,params,fn){
			Ext.Ajax.request({
          		url: url,
                timeout:60000,
                disableCaching:true,
                params: params,
                success: fn,
                failure: function(response, opts){/*Ext.Msg.alert("提示", "网络异常或服务出现故障！");*/}
            });
		},
  	 submitFailure : function(form,action){
		switch (action.failureType) {
            case Ext.form.Action.CONNECT_FAILURE:
                Ext.MessageBox.show({
		           title: '错误提示',
		           msg: 'AJAX通讯失败,请检查网络!',
		           buttons: Ext.MessageBox.OK,
		           icon: Ext.MessageBox.WARNING
		          });
                break;
            case Ext.form.Action.SERVER_INVALID:
                Ext.MessageBox.show({
		           title: '错误提示',
		           msg: action.result.msg,
		           buttons: Ext.MessageBox.OK,
		           icon: Ext.MessageBox.WARNING
		          });
                break;
        }
	 },
		/*表单所有元素去空格&隐藏部分非必填*/
		trim : function(ccform){
			ccform.form.items.each(function(){
	        	if(this.el==null || this.el==undefined){
	        		return;
	        	}
	        	if(this.getXType()=='textfield' || this.getXType()=='textarea'){
	        		this.setValue(this.getValue().trim());//去除空格
	        	}
				if(this.getXType()=='textarea'){
	            	this.setValue(this.getValue().replace(/\r\n/g,'<br>').replace(/\n/g,'<br>'));//去除换行符
	            }
	           	if(this.ownerCt.hidden || this.hidden){
		            this.allowBlank = true;
		            this.clearInvalid();
		        }
	        });
		},
	 /*组件值置空*/
	    resetItem  : function (ids){
	     var l = ids.indexOf(',');
	      if(l!=-1)
	      {
	       var arr = ids.split(',');
	       for(var i=0;i<arr.length;i++)
	       {
	        Ext.getCmp(''+arr[i]).reset(); 
	       }
	      }else
	      {
	        Ext.getCmp(''+ids).reset(); 
	      }
	    },
	    /*禁用所有组件*/
	    disableItem  : function (ids){
	     var l = ids.indexOf(',');
	      if(l!=-1)
	      {
	       var arr = ids.split(',');
	       for(var i=0;i<arr.length;i++)
	       {
	        Ext.getCmp(''+arr[i]).disable(); 
	       }
	      }else
	      {
	        Ext.getCmp(''+ids).disable(); 
	      }
	    },/*启用素有组件*/
	    enableItem  : function (ids){
	     var l = ids.indexOf(',');
	      if(l!=-1)
	      {
	       var arr = ids.split(',');
	       for(var i=0;i<arr.length;i++)
	       {
	        Ext.getCmp(''+arr[i]).enable(); 
	       }
	      }else
	      {
	        Ext.getCmp(''+ids).enable() ; 
	      }
	    },
	    /*隐藏所有组件*/
	    hideItem  : function (ids){
	     var l = ids.indexOf(',');
	      if(l!=-1)
	      {
	       var arr = ids.split(',');
	       for(var i=0;i<arr.length;i++)
	       {
	        Ext.getCmp(''+arr[i]).show(); 
	       }
	      }else
	      {
	        Ext.getCmp(''+ids).show() ; 
	      }
	    },
	    /*显示所有组件*/
	    showItem  : function (ids){
	     var l = ids.indexOf(',');
	      if(l!=-1)
	      {
	       var arr = ids.split(',');
	       for(var i=0;i<arr.length;i++)
	       {
	        Ext.getCmp(''+arr[i]).show(); 
	       }
	      }else
	      {
	        Ext.getCmp(''+ids).show() ; 
	      }
	    },
	    /*显示输入位数,左边输入框飘红*/
	    showlenght :function(obj,len)
	    {
	     var lenvalue=obj.getValue().length;
	     var tmp = len-lenvalue;
		 var len = obj.el.dom.parentNode.childNodes.length;
		    if(len>1){
	         var e = obj.el.dom.parentNode.childNodes[1];
			  e.innerHTML=tmp;
			 }else
			  {
				 var font=document.createElement("font");
					 font.setAttribute("color","red");
				var redStar=document.createTextNode(tmp);  
					 font.appendChild(redStar);  
				    obj.el.dom.parentNode.appendChild(font);  
			 }
	    },
  		/*GRID表格渲染为绿色*/
		renderCell : function (value){
			return '<div style="color:green;cursor:hand;text-decoration:underline">'+value+'</div>';
		},
		/*列表中的锁定人*/
		renderLockCell : function (value){
		    if(value=='0/0')
		      return '';
		    else 
		     return value;
		},
		/*鼠标放在工单编号上显示内容*/
		renderCon : function (value,metadata,record){
			return '<div style="color:red;cursor:hand;text-decoration:underline" title="内容：'+record.get('MEMO')+'">'+value+'</div>';
		},
		 /*同步调用规则判断  
		 * params : 输入参数，例：OPERATETYPE=1100&R_1001_USERLEVEL=V100 ，其中OPERATETYPE为规则类型，R_1001_USERLEVEL为规则执行所需变量
		 * */	
		callRuleSync: function (params) {
			return;
			if(Ext.getCmp("BT_SUBMIT")==null)
				{
					alert("未找到受理键[名称为BT_SUBMIT],调用规则时需要设定");
					return false;
				}
		  	var url = GLOBAL_ROOTURL+"/RuleAction.do";
		  	Ext.MessageBox.show({msg:'正在规则判断,请稍候...', width:300,  wait:CSR.APPROVE, waitConfig: {interval:200}});
		  	var backData = syncAJAX(url,params);
			Ext.MessageBox.hide();
		    var obj= Ext.decode(backData);
		    var success = obj.success;
		    if(!success){
		       comForm.warn("规则调用失败",obj.msg);
		       return;
		    }
			var resultType = obj.resultType;
			var resultMessage = obj.resultMessage;
			if(resultType=="0"){				//拒绝受理
				Ext.getCmp("BT_SUBMIT").disabled = true;
			}
			else if(resultType=="1"){			//流转
				Ext.getCmp("BT_SUBMIT").disabled = false;
			}
			else{}
			//alert(resultMessage);
			Ext.MessageBox.show({
		           title: '规则提示',
		           msg: resultMessage,
		           buttons: Ext.MessageBox.OK,
		           icon: Ext.MessageBox.INFO
		          });
		         
		},
		/**
		 * 查询卡币种信息
		 * @param cardNo 卡号
		 * @param fn 回调函数 传入参数值为result和mark result为接口返回的原始result,mark为货币标志数组，如果是人民币和美元双币卡，mark=[156,840]
		 * @author 梁华英
		 */
		 getCardInfo :function(cardNo,fn){
			var url = GLOBAL_ROOTURL+"/tradeserviceAction.do";
			var params = {
					tradeno:1044, 
					cardNo:cardNo,
					RESULTDATATYPE:'MAP'
			};
			FUNCTION.asyncAJAX(url, params, function(response,opts){
				var obj= Ext.decode(response.responseText);
		     	var result = Ext.decode(obj.result);
		     	var record = Ext.decode(obj.record);
		     	var mark = [];
		     	for(var i=0;i<record.length;i++){
		     		mark.push(record[i].currency);
		     	}
		     	fn.call(this,{result:result,mark:mark});
			});
		}
 };
